The Institute of Electrical and Electronic Engineers (IEEE) frequently adopts standards for the integrated circuit community. IEEE has adopted a standard (IEEE standard 754-1985) regarding the handling of floating-point numbers and floating-point exceptions, such as underflow and overflow. In general, floating-point exceptions occur when unsupported operands types are encountered as inputs or would be the result of the operation.
In most cases, the exceptions are detected within the hardware. If detected exceptions are then completely processed in hardware, more complex hardware designs are required. This results in larger design times and longer time to market. The additional hardware required for exception handling consumes significant integrated circuit (IC) surface area. Increases in IC surface area is disadvantageous.
Another method of processing exception conditions involves using software algorithms to process exceptions. Once an exception condition is detected within the hardware floating-point unit, the microprocessor invokes a software program/routine to perform the floating-point operation which resulted in the hardware exception. The software algorithms which operate on a first floating-point operand and a second floating-point operand to produce a floating-point result are typically slow. For example, a floating-point multiply which is performed in hardware may take only one clock cycle or a few clock cycles to complete. In software, a floating-point multiply will typically consume tens or hundreds of clock cycles before completing. Therefore, handling exceptions exclusively in hardware or exclusively in software both have significant drawbacks.